package br.com.conhecimento.infra.security;

import java.io.IOException;
import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import br.com.conhecimento.model.Usuario;
import br.com.conhecimento.service.UsuarioBO;
import br.com.conhecimento.util.FacesUtil;

/**
 * Classe responsavel pela autenticacao usuario 
 * 
 * @author Luis Garcia
 * @since 27/04/2013
 */
@Service
public class Authentication {

	protected Authentication() { }

	@Autowired
	private UsuarioBO usuarioBO;
	
	public int logar(String login, String password) throws AuthenticationException, Exception {

    	Usuario usuario = null;
    	try {
    		password = Criptography.encrypt(password);
    		usuario = usuarioBO.getUsuario(login, password);
    	} catch (Exception e) {
    		return 1;
    	}

    	if (usuario == null)
    		return 2;

    	usuario.setDataUltimoLogin(new Date());
    	usuario.setContadorLogin(usuario.getContadorLogin() != null ? usuario.getContadorLogin() + 1 : 1);
		usuarioBO.atualizar(usuario);
    	
        FacesUtil.getSessionMap().put("usuario", usuario);
        return 0;
    }

    public void deslogar() throws IOException {
        FacesUtil.getSessionMap().remove("usuario");
        FacesUtil.redirectPage("/index.jsf");
    }
}